package request

import (
	"github.com/go-playground/validator/v10"
	"regexp"
)

//用户模块的请求体

//request  请求
//response 返回
//模型绑定

//注册接口 请求体的结构体进行json绑定   接口传输过来的参数
//binding 验证规则  多个验证规则以逗号隔开（英文逗号）
//常见的验证规则   required 非空   max 最大值  min 最小值  email 邮箱
//如果你要验证的参数  没有对应的规则  则需要自定义规则  比如mobile 手机号
//自定义验证规则  1. 定义验证器  2. 在gin框架初始化后注册验证器
// 校验两个值相等  eqcsfield

type RegisterRequest struct {
	Mobile     string `json:"mobile" binding:"required,validateMobile"` //既不能为空， 也得满足手机号格式要求
	Password   string `json:"password" binding:"required,min=8,max=20"` //
	RePassword string `json:"rePassword" binding:"required,eqcsfield=Password"`
}

type LoginRequest struct {
	Mobile   string `json:"mobile" binding:"required,validateMobile"`
	Password string `json:"password" binding:"required,min=8,max=20"`
}

//手机号的验证器  -- 验证规则

func ValidateMobile(data validator.FieldLevel) bool {
	//手机号的正则表达式
	mobilePattern := `^1[3-9]\d{9}$`                //百度粘贴
	regex := regexp.MustCompile(mobilePattern)      //编译正则表达式
	return regex.MatchString(data.Field().String()) //执行匹配
}
